//===- lli.cpp - LLVM Interpreter / Dynamic compiler ----------------------===//
//
//                     The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
//
// This utility provides a simple wrapper around the LLVM Execution Engines,
// which allow the direct execution of LLVM programs through a Just-In-Time
// compiler, or through an interpreter if no JIT is available for this platform.
//
//===----------------------------------------------------------------------===//

#ifndef EMULATOR_H
#define EMULATOR_H

#include "EmulatorIRGenerator.h"
#include "EmulatorCodeGenerator.h"
#include "EmulatorInterpreter.h"
#include "llvm/LLVMContext.h"
#include "llvm/Module.h"
#include "llvm/Type.h"
#include "llvm/Function.h"
#include "llvm/Support/Host.h"
#include "llvm/ADT/Triple.h"
#include "llvm/Support/IRBuilder.h"
#include "llvm/CodeGen/LinkAllCodegenComponents.h"
#include "llvm/ExecutionEngine/GenericValue.h"
#include "llvm/ExecutionEngine/JIT.h"
#include "llvm/ExecutionEngine/JITEventListener.h"
#include "llvm/ExecutionEngine/JITMemoryManager.h"
#include "llvm/Support/TargetSelect.h"
#include <cerrno>
#include <cstdio>

// ========================================
// get the global emulator objects.
// ========================================
EmulatorIRGenerator* getGlobalIRGen(void);
EmulatorCodeGenerator* getGlobalCodeGen(void);
ExecutionEngine* getGlobalEE(void);
EmulatorInterpreter* getGlobalInterp(void); 
Module* getGlobalModule(void);

#endif // EMULATOR_H

